package com.dinnovate.dxf.page;

import com.dinnovate.dxf.service.dxfDataService;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;


public class IndexFrame extends JFrame implements ActionListener {

    dxfDataService dxfDataService = new dxfDataService();

    //   窗口
    JFrame jf = new JFrame("DWG文件读取");

    //    画板
    JPanel jp = new JPanel();


    //    布局选项卡
    JTabbedPane tp = new JTabbedPane();


    //    布局1（容器）
    Container con = new Container();

    //    标签
    JLabel pictureFolder = new JLabel("选择dxf文件：");
    JLabel outputPath = new JLabel("选择输出路径：");
    JLabel NoName = new JLabel("导出文件名：");

    //    路径文本
    JTextArea pictureText = new JTextArea();
    JTextArea outputText = new JTextArea();
    JTextArea noText = new JTextArea();

    //    按钮
    JButton pictureButton = new JButton("...");
    JButton outputButton = new JButton("...");

    /*执行按钮*/
    JButton startButton = new JButton("执行");

    //    文件选择器
    JFileChooser chooser = new JFileChooser();

    public void Frame() {
        /*设置窗口属性*/
//        窗口可见
        jf.setVisible(true);
//        窗口大小
        jf.setSize(600, 333);
//        关闭窗口时关闭程序
        jf.setDefaultCloseOperation(EXIT_ON_CLOSE);


//        面板加载到窗口
        jf.add(jp);
//        布局卡加载到面板
        jf.setContentPane(tp);

//        设置位置
        pictureFolder.setBounds(20, 20, 120, 20);
        pictureText.setBounds(140, 20, 400, 20);
        pictureButton.setBounds(540, 20, 20, 20);

        outputPath.setBounds(20, 60, 120, 20);
        outputText.setBounds(140, 60, 400, 20);
        outputButton.setBounds(540, 60, 20, 20);

        NoName.setBounds(20, 100, 120, 20);
        noText.setBounds(140, 100, 400, 20);

        startButton.setBounds(100, 140, 100, 30);

//      设置按钮事件处理
        pictureButton.addActionListener(this);
        outputButton.addActionListener(this);
        startButton.addActionListener(this);

//        按钮添加进容器
//        图片文件夹
        con.add(pictureFolder);
        con.add(pictureText);
        con.add(pictureButton);
//        输出路径
        con.add(outputPath);
        con.add(outputText);
        con.add(outputButton);

        con.add(NoName);
        con.add(noText);

//        添加执行按钮
        con.add(startButton);

//        将容器放入布局
        tp.add("图片归类", con);


    }


    @Override
    public void actionPerformed(ActionEvent e) {

        try {
//      设置文件选择器【0：文件 1：文件夹】
            if (e.getSource() == pictureButton) {
                pictureText.setText(this.getTextPath(0));
            } else if (e.getSource() == outputButton) {
                outputText.setText(this.getTextPath(1));
            } else if (e.getSource() == startButton) {
//            System.out.println("执行");
                dxfDataService.executionDXF(pictureText.getText(), noText.getText(), outputText.getText());
            }
        } catch (Exception ex) {
            JOptionPane.showConfirmDialog(null, "运行失败，请联系开发者");
        }

    }

    /**
     * 返回选择的文件/文件夹路径
     *
     * @return string
     */
    public String getTextPath(int filesOnly) {
//            设置文件选择器【0：文件 1：文件夹】
        if (filesOnly == 0) {
            chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
        } else if (filesOnly == 1) {
            chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        }
//            打开文件浏览器
        int status = chooser.showOpenDialog(null);
        if (status == JFileChooser.CANCEL_OPTION) {
//            System.out.println("选择了取消");
            return null;
        } else {
            File f = chooser.getSelectedFile();
//            text.setText(f.getAbsolutePath());
//            System.out.println("主页面获取的文件" + f.getAbsolutePath());
            return f.getAbsolutePath();
        }
    }

}

